/**
 * 
 */
package quartz;

import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SimpleScheduleBuilder;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;
import quartz.job.HelloJob;


/**
 * 
 *
 * @author Gavin<br>
 *         2020年6月16日
 */
public class test {
	public static void main(String[] args) throws SchedulerException {
		// 1.调度器(Scheduler)，从工厂中获取调度的实例
		Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
		// 2.任务实例（JobDetail）
		JobDetail jobDetail = JobBuilder.newJob(HelloJob.class)// 加载任务类，与hellojob完成绑定
				.withIdentity("job1", "group1")// 参数1：任务的唯一实例，参数2:任务组的名称
				.usingJobData("message", "打印日志")// 传递参数
				.usingJobData("count",0)
				.build();
		System.out.println(jobDetail.getKey().getName());
		System.out.println(jobDetail.getKey().getGroup());// 如果没有指定组名有默认的组名
		// 3:触发器（Trigger）
		Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1", "group1")// 参数1：触发器的唯一实例，参数2：触发器务组的名称
				.usingJobData("message", "data2").startNow()// 马上启动触发器
				.withSchedule(SimpleScheduleBuilder.simpleSchedule().repeatSecondlyForever(5))// 每5秒重复执行，去掉这行就只执行一次就结束
				.build();
		// 4.让调度器管理任务触发器，保证按照触发器定义的条件执行任务
		scheduler.scheduleJob(jobDetail, trigger);
		// 启动
		scheduler.start();
	}
}
